package com.bit.inmap;



import com.nhn.android.maps.NMapActivity;
import com.nhn.android.maps.NMapController;
import com.nhn.android.maps.NMapView;
import com.nhn.android.maps.NMapView.OnMapStateChangeListener;
import com.nhn.android.maps.NMapView.OnMapViewTouchEventListener;
import com.nhn.android.maps.overlay.NMapPOIdata;
import com.nhn.android.maps.overlay.NMapPathData;
import com.nhn.android.maps.overlay.NMapPathLineStyle;
import com.nhn.android.mapviewer.overlay.NMapOverlayManager;
import com.nhn.android.mapviewer.overlay.NMapPathDataOverlay;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.drawable.ColorDrawable;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.Toast;

public class GPSActivity extends NMapActivity {
	private String phoneNum;
	//static boolean check = false;
	protected static boolean check=false;
	SMS_Act smsservice = new SMS_Act();
	private EditText et1;
	// API-KEY
	public static final String API_KEY = "e6d2075536faedd2f5da1f4bbfd1b17e";
	// 네이버 맵 객체
	NMapView mMapView = null;
	// 맵 컨트롤러
	NMapController mMapController = null;
	// 맵을 추가할 레이아웃
	LinearLayout MapContainer;

	// 오버레이의 리소스를 제공하기 위한 객체
	NMapViewerResourceProvider mMapViewerResourceProvider = null;
	// 오버레이 관리자
	NMapOverlayManager mOverlayManager;
	double mLat;
	double mLon;
	double uLon,uLat;
	final SmsManager sms = SmsManager.getDefault();
	
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_gps);
		
		if(check==true){
			Intent intent = new Intent();
			String ee = intent.getStringExtra("location");
			
			String[] str = ee.split("@");
			String lon = str[0];
			String lat = str[1];
			
			uLon = Double.parseDouble(lon);
			uLat = Double.parseDouble(lat);
		}
		
		startService(new Intent("sms_service"));
		Paint p = new Paint();
		p.setColor(Color.GREEN);
		p.setStyle(Paint.Style.STROKE);
		p.setStrokeWidth(5);

		LocationManager lmh = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

		Location lastKnownLocation = null;

		lastKnownLocation = lmh
				.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);

		mLat = lastKnownLocation.getLatitude();
		mLon = lastKnownLocation.getLongitude();

		LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
		String lProvider = lm.getBestProvider(new Criteria(), true);
		lm.requestLocationUpdates(lProvider, 30000, 10, new LocationListener() {

			public void onLocationChanged(Location location) {
				mLat = location.getLatitude();
				mLon = location.getLongitude();
			}

			public void onProviderDisabled(String provider) {
			}

			public void onProviderEnabled(String provider) {
			}

			public void onStatusChanged(String provider, int status,
					Bundle extras) {
			}

			public <NMapError> void onMapInitHandler(NMapView mapview, NMapError errorInfo) {
				if (errorInfo == null) { // success
					// mMapController.setMapCenter(new NGeoPoint(126.978371,
					// 37.5666091), 11);

				} else { // fail
					android.util.Log.e("NMAP", "onMapInitHandler: error="
							+ errorInfo.toString());
				}
			} // 현재 위치값 받아오기 . 뭐가 뭔지모르겠다.. 

		});

		/******************* 지도 초기화 ********************/
		// 네이버 지도를 넣기 위한 LinearLayout 컴포넌트
		MapContainer = (LinearLayout) findViewById(R.id.MapContainer);

		// 네이버 지도 객체 생성
		mMapView = new NMapView(this);

		// 지도 객체로부터 컨트롤러 추출
		mMapController = mMapView.getMapController();

		// 네이버 지도 객체에 APIKEY 지정
		mMapView.setApiKey(API_KEY);

		// 생성된 네이버 지도 객체를 LinearLayout에 추가시킨다.
		MapContainer.addView(mMapView);

		// 지도를 터치할 수 있도록 옵션 활성화
		mMapView.setClickable(true);

		// 확대/축소를 위한 줌 컨트롤러 표시 옵션 활성화
		mMapView.setBuiltInZoomControls(true, null);

		/******************* 오버래이 초기화 ********************/
		// 오버래이 리소스 관리자 생성
		mMapViewerResourceProvider = new NMapViewerResourceProvider(this);

		// 오버래이 관리자 생성. 이 객체에게 맵뷰와 오버래이 리스소 관리자를 연결한다.
		mOverlayManager = new NMapOverlayManager(this, mMapView,
				mMapViewerResourceProvider);

		/******************* 출발 위치와 도착위치 지정 ********************/
		// set POI data
		NMapPOIdata poiData = new NMapPOIdata(2, mMapViewerResourceProvider);
		poiData.beginPOIdata(2);
		poiData.addPOIitem(mLon, mLat, "나의 위치", NMapPOIflagType.FROM, 0);
		/*if(check == false){
			poiData.addPOIitem(mLon, mLat, "나의 위치", NMapPOIflagType.FROM, 0);
		}else if(check == true){
			poiData.addPOIitem(uLon, uLon, "우리 아이 위치", NMapPOIflagType.FROM, 0);
		}*/
		poiData.endPOIdata();
		// http://map.naver.com/?menu=location&mapMode=0&lat=35.1556626&lng=126.8602048&dlevel=12&searchCoord=126.8769254%3B35.1433991&query=7IOB66y0IOqzoOuTse2Vmeq1kA%3D%3D&mpx=05140780%3A35.1433991%2C126.8769254%3AZ11%3A0.0212180%2C0.0098457&tab=1&enc=b64
		// create POI data overlay
		mOverlayManager.createPOIdataOverlay(poiData, null);

		/******************* 이동 경로 지정 ********************/
		// 이동 경로를 추가하기 위한 객체
		NMapPathData pathData = new NMapPathData(9);

		// 이동 경로 표시 시작
		pathData.initPathData();
		pathData.addPathPoint(mLon, mLat, NMapPathLineStyle.TYPE_SOLID);
		/*if(check == false){
			pathData.addPathPoint(mLon, mLat, NMapPathLineStyle.TYPE_SOLID);
		}else{
			pathData.addPathPoint(uLon, uLat, NMapPathLineStyle.TYPE_SOLID);
		}*/
		// 이동 경로 표시 종료
		pathData.endPathData();

		// 지도상에 이동 경로 표시
		NMapPathDataOverlay pathDataOverlay = mOverlayManager
				.createPathDataOverlay(pathData);

		// 지도상의 표시 위치와 축적을 이동 경로를 포함한 화면으로 초기화
		pathDataOverlay.showAllPathData(0);
	}

	public boolean onCreateOptionsMenu(Menu menu) {
		super.onCreateOptionsMenu(menu);

		MenuItem item = menu.add(0, 1, 0, "우리아이 위치확인");
		item.setIcon(R.drawable.ic_launcher);
		item.setAlphabeticShortcut('a');

		menu.add(0, 2, 0, "문자보내기").setIcon(R.drawable.ic_launcher);

		return true;
	}

	public boolean onOptionsItemSelected(MenuItem item) {
		
		switch (item.getItemId()) {
		case 1:
			inputPhone();
//			Toast.makeText(this, "위치확인했습니다", Toast.LENGTH_SHORT).show();
			
//			SmsManager smsManager = android.telephony.SmsManager.getDefault();
//			
//			smsManager.sendTextMessage("01050280785", null, "어디야", null, null);
//			check = true;
			break;
		case 2:
			sendsms();
			Toast.makeText(this, "문자메시지 이동중..", Toast.LENGTH_SHORT).show();
			
		}
		
		return false;

	} 
	
	// 전화번호 입력창 열기
	private void inputPhone() {
		Context context = this.getApplicationContext();
		LayoutInflater inflater = (LayoutInflater) context
				.getSystemService(LAYOUT_INFLATER_SERVICE);
		final View layout = inflater.inflate(R.layout.input_phone, null);

		AlertDialog.Builder aDialog = new AlertDialog.Builder(this);
		//aDialog.setTitle("로그아웃 하시겠습니까");
		aDialog.setView(layout);

		aDialog.setPositiveButton("확인", new DialogInterface.OnClickListener() {

			public void onClick(DialogInterface dialog, int which) {
				EditText phoneEd = (EditText) layout.findViewById(R.id.phone_number_edit);
				phoneNum = phoneEd.getText().toString().trim();
				SmsManager smsManager = android.telephony.SmsManager.getDefault();
				
				smsManager.sendTextMessage(phoneNum, null, "어디야", null, null);
				check = true;
				//Toast toast = makeText(this, "위치확인했습니다", Toast.LENGTH_SHORT).show();
			}

		});
		aDialog.setNegativeButton("취소", new DialogInterface.OnClickListener() {

			@Override
			public void onClick(DialogInterface dialog, int which) {
				dialog.cancel();

			}
		});
		AlertDialog ad = aDialog.create();
		ad.setView(layout,0,0,0,0);
		ad.show();
		
		ad.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));// 투명처리
		ad.setCanceledOnTouchOutside(false); // 다이얼로그 밖 터치시 사라지지않기
		ad.setInverseBackgroundForced(true);
	}
	
	public void sendsms(){
		Intent intent = new Intent(Intent.ACTION_VIEW);
		intent.putExtra("sms_body", "The SMS text");
		intent.setType("vnd.android-dir/mms-sms");
		startActivity(intent);
	}
	public void onBackPressed() {
		check=false;
		Intent intent = new Intent(this, MainActivity.class);
		intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);	// 메인이동후 이전 액티비티 스택 비우기(스택에 쌓인 액티비티 삭제)
		startActivity(intent);
	}
	
}